import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

class Solution {
    /**
     * 两次遍历
     * TODO 可以一次遍历
     * 
     * @param nums
     * @return
     */
    public int minimumSeconds(List<Integer> nums) {

        int i = 0;
        HashMap<Integer, LinkedList<Integer>> map = new HashMap<>();
        for (int j = 0; j < nums.size(); j++) {
            i = nums.get(j);
            if (map.get(i) == null) {
                map.put(i, new LinkedList<Integer>());
            }
            map.get(i).add(j);
        }
        
        int res = nums.size();
        int lRes = 0;
        LinkedList<Integer> l;

        for (Map.Entry entry : map.entrySet()) {
            l = (LinkedList<Integer>) entry.getValue();
            lRes = l.getFirst()-l.getLast()+nums.size()-1;
            for (int j = 0; j < l.size()-1 ; j++) {
                lRes = Math.max(lRes, l.get(j+1)-l.get(j)-1);
            }
            res=Math.min(res, lRes);
        }

        return (res+1)/2;
    }
}